\documentclass[a4paper,12pt]{article}

\usepackage{fancyhdr}
\usepackage[utf8]{inputenc}
\usepackage{polski}
\usepackage[polish]{babel}
\usepackage{a4wide}
% wstawianie obrazkow
\usepackage{graphicx}

\pagestyle{fancy}

\renewcommand{\headheight}{16pt}

\newcommand{\HRule}{\rule{\linewidth}{0.1mm}}

\begin{document}

\begin{titlepage}
\begin{center}
	\textsc{Inżynieria oprogramowania - Grupa dra inż. Leszka Grocholskiego}\\
	\textsc{II UWr 2009/2010}\\[4cm]

	\HRule \\[2cm]

	Aleksandra Kloc, Adam Grycner, Mateusz Łyczek\\[1cm]

	\textsc{\Large Wasza-fota.pl}\\[0.3cm]
	\textsc{\large Projekt bazy danych}\\[2cm]

	\HRule\\[2.5cm]
	
\begin{center}
\textbf{Historia zmian tego dokumentu}
\end{center}
\begin{table}[h]
	\begin{center}
	{\footnotesize
	\begin{tabular}{|l|c|p{2.8cm}|l|}
		\hline
		\textbf{Data} & \textbf{Wersja} & \textbf{Autor} & \textbf{Opis zmian}\\
		\hline
		2009/11/23 & 1.0 & Mateusz Łyczek & Projekt bazy i opis\\
		\hline
	\end{tabular}
	}
	\end{center}
	\caption{Historia zmian}
\end{table}
	
	
\end{center}
\end{titlepage}

\tableofcontents
\newpage

\section{Wstęp}
Projekt bazy danych wykonany jest w języku UML. Użyte zostały następujące oznaczenia:
\begin{itemize}
	\item \verb+# id: INT+ - oznacza kolumnę o nazwie \emph{id}, która jest typu \verb+INT+ i jest kluczem podstawowym danej tabeli
	\item \verb1+ nazwa: VARCHAR(50)1 - kolumna o nazwie \emph{nazwa}, która jest typu \verb+VARCHAR(50)+
\end{itemize}

\section{Projekt}
\begin{center}
	\begin{figure}[ht]
		\caption{Diagram UML - projekt bazy danych portalu}
		\label{F:db_uml}
		\begin{center}
			\includegraphics[width=0.87\textwidth]{projekt}
		\end{center}
	\end{figure}
\end{center}

\subsection{Tabela admin\_users}
Tabela ta przechowuje informacje o administratorach serwisu, którzy mają dostęp do panelu administratora. Zawiera ich imię i nazwisko, zaszyfrowane
hasło do panelu administratora, mail oraz datę dodania administratora do bazy.

\subsection{Tabela foto\_users}
Tabela \verb+foto_users+ przechowuje informacje o fotografach zarejestrowanych na portalu. Są tam ich dane personalne oraz nazwa zakładu
fotograficznego jaki reprezentują bądź posiadają. W odpowiednich polach są przechowywany ich dane teleadresowe oraz dane potrzebne do dokonania
transakcji (nip, numer konta).

Kolumna \verb+aktywowany+ jest domyślnie ustawiana na wartość \verb+FALSE+ i taka pozostaje do momentu aktywowania przez fotografa swojego konta
linkiem aktywacyjnym otrzymanym w mailu po rejestracji na portalu.

Kolumna \verb+zablokowany+ przechowuje informację, czy dany fotograf jest zablokowany przez administratorów serwisu. Nie może on wtedy zalogować się
w pełni do panelu fotografa a klienci nie mogą zamawiać jego zdjęć. Blokada jest nakładana po złamaniu przez fotografa regulaminu.

\subsection{Tabela pakiety}
Tabela \verb+pakiety+ przechowuje informacje o pakietach dostępnych na portalu. Są tu: nazwa pakietu, ilość miejsca jakie gwarantuje na serwerze
oraz jego cena i ważność (podana w dniach - ile dni dany pakiet jest ważny, standardowo wartością tej kolumny jest 360).

\subsection{Tabela sprzedane\_pakiety}
W tej tabeli przechowywane są informacje o tym kto i kiedy kupił jaki pakiet. Są tu więc pakiety, z których fotografowie aktualnie korzystają
oraz ich historia, bo informacje o każdym wykupionym pakiecie są tutaj zapisane. Przechowujemy tutaj id sprzedanego pakietu, id pakietu z tabeli
\verb+pakiety+, które odsyła nas tam po szczegółowe informacje o pakiecie. Pole \verb+kto+ zapamiętuje fotografa, który kupił dany pakiet. Kolumna
\verb+zaakceptowany+ mówi, czy administrator zaakceptował prośbę o pakiet (czyli zobaczył, że pieniądze wpłynęły na konto i w panelu administratora
zaznaczył daną prośbę jako zaakceptowaną). Pamiętamy też datę sprzedania pakietu w polu o odpowiedniej nazwie, a w polu \verb+data_waznosci+
wpisujemy w momencie akceptacji pakietu datę, do której pakiet jest ważny.

\subsection{Tabela zdjęcia}
Tabela ta przechowuje informacje o wszystkich zdjęciach dodanych przez fotografów. Zawiera id zdjęcia, oryginalną nazwę (taką jaką miał ustawioną
fotograf w momencie wysyłania zdjęcia na serwer), gdyż zdjęcia na serwerze są pamiętane pod inną nazwą w celach bezpieczeństwa. Pamiętamy też
wymiary zdjęcia, żeby nie obliczać ich za każdym razem na nowo, rozmiar (w bajtach) oraz id galerii (z tabeli \verb+galerie+), do której zdjęcie
należy.

\subsection{Tabela galerie}
Tabela \verb+galerie+ służy do zapamiętania informacji o galeriach. Pamiętamy nazwę danej galerii, jej numer identyfikacyjny (kolumna \verb+id+),
hasło ustawione do galerii, jeśli fotograf takie ustawił oraz datę dodania galerii do portalu i datę imprezy, z której zdjęcia galeria zawiera.
Zapisujemy też ilość zdjęć w galerii i fotografa, który jest jej autorem.

\subsection{Tabela odbitki}
W tej tabeli przechowywane są dane o wszystkich odbitkach zamówionych przez klientów (będących częścią zamówień przez nich składanych). Kolumna
\verb+id_zdjecia+ przechowuje id zdjęcia z tabeli \verb+zdjecia+, z którego klient chce wykonać odbitkę. Pamiętamy też zamówioną ilość odbitek,
rozmiar papieru na jakim mają być wykonane, ewentualne zastosowane efekty, użyty rodzaj papieru (matowy, błyszczący, metalik), ceny:
\begin{itemize}
	\item \verb+cena_roz_pap+ - cena pobrana z tabeli \verb+ceny+ za wybraną konfigurację rozmiar-papier,
	\item \verb+cena_add_efekt+ - cena pobrana z tabeli \verb+ceny_efekty+ jaką należy dodać do ceny za rozmiar-papier w przypadku zastosowania
					danego efektu
\end{itemize}
oraz id zlecenia, do którego dane odbitki należą.

\subsection{Tabela zlecenia}
Tabela ta przechowuje informacje o zleceniach złożonych przez klientów. Mamy tu id zlecenia, datę jego zgłoszenia przez klienta, fotografa do
którego się odnosi oraz status zlecenia (czy jest przyjęte, realizowane, czy zostało już wysłane). Są tutaj też informacje o kliencie, który
złożył zamówienie, czyli adresacie tego zlecenia. Jest jego imię i nazwisko w kolumnie \verb+adresat+ oraz dane adresowe, na które zostaną wysłane
gotowe odbitki.

\subsection{Tabela rozmiary}
W tej tabeli są przechowywane dostępne rozmiary odbitek, które klient będzie miał do wyboru, jeśli tylko fotograf zaznaczy, że wykonuje odbitki
takiego rozmiaru. Kolumna \verb+id+ służy do odwoływania się do rozmiarów w innych tabelach.

\subsection{Tabela papiery}
Tabela \verb+papiery+ zawiera dostępne rodzaje papierów, na których można wywołać odbitki. Przeznaczenie pola \verb+id+ jest analogiczne jak
w tabeli \verb+rozmiary+.

\subsection{Tabela efekty}
Tabela ta przechowuje informacje o efektach, które mogą być stosowane do zdjęć. Fotografowie decydują później, które z nich chcą zaoferować swoim
klientom.

\subsection{Tabela ceny}
Tabela \verb+ceny+ zawiera ceny, które ustalili fotografowie. Nieobecność w niej jakiejś konfiguracji rozmiar-papier oznacza, że dany fotograf
zdecydował, że nie będzie świadczył usług tego rodzaju. Ceny podane w tej tabeli odnoszą się do par rozmiar-papier.

\subsection{Tabela ceny\_efekty}
W tej tabeli są zapisane ceny, jakie każdy fotograf ustalił, że trzeba będzie dodać do standardowej ceny po zastosowaniu jakiegoś efektu. Tutaj
tak samo jak w tabeli \verb+ceny+, brak rekordu z ceną jakiegoś efektu u danego fotografa oznacza, że dany fotograf nie oferuje takiej usługi.


\subsection{Uwagi ogólne}
Wszystkie kolumny o nazwie \verb+haslo+ zawierają zaszyfrowane hasła przy pomocy jednokierunkowej funkcji haszującej wykorzystującej algorytm
\verb+SHA1+. Wynikiem haszowania tą funkcją jest 40-znakowy ciąg składający się z liter i cyfr, dlatego te kolumny są typu \verb+VARCHAR(40)+.

\end{document}
